#include "wxstogglebutton.h"
#include <wx/tglbtn.h>

namespace {
  wxsRegisterItem<wxsToggleButton> Reg( _T( "ToggleButton" ), _T( "切换按钮" ), wxsTWidget, _T( "标准" ), 30 );
  WXS_ST_BEGIN( wxsToggleButtonStyles, _T( "" ) )
  WXS_ST_CATEGORY( "wxToggleButton" )
  WXS_ST_DEFAULTS()
  WXS_ST_END()
  WXS_EV_BEGIN( wxsToggleButtonEvents )
  WXS_EVI( EVT_TOGGLEBUTTON, wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEvent, Toggle )
  WXS_EV_END()
}

wxsToggleButton::wxsToggleButton( wxsItemResData* Data ):
  wxsWidget(
    Data,
    &Reg.Info,
    wxsToggleButtonEvents,
    wxsToggleButtonStyles ),
  Label( _T( "Label" ) ),
  IsChecked( false ) {}


void wxsToggleButton::OnBuildCreatingCode() {
  switch( GetLanguage() ) {
  case wxsCPP: {
    AddHeader( _T( "<wx/tglbtn.h>" ), GetInfo().ClassName, 0 );
    Codef( _T( "%C(%W, %I, %t, %P, %S, %T, %V, %N);\n" ), Label.wx_str() );
    if( IsChecked ) {
      Codef( _T( "%ASetValue(%b);\n" ), true );
    }
    BuildSetupWindowCode();
    return;
  }
  case wxsUnknownLanguage:
  default: {
    wxsCodeMarks::Unknown( _T( "wxsToggleButton::OnBuildCreatingCode" ), GetLanguage() );
  }
  }
}

wxObject* wxsToggleButton::OnBuildPreview( wxWindow* Parent, long Flags ) {
  wxToggleButton* Preview = new wxToggleButton( Parent, GetId(), Label, Pos( Parent ), Size( Parent ), Style() );
  Preview->SetValue( IsChecked );
  return SetupWindow( Preview, Flags );
}

void wxsToggleButton::OnEnumWidgetProperties( M_Code_unused long Flags ) {
  WXS_STRING( wxsToggleButton, Label, _T( "Label" ), _T( "label" ), _T( "" ), false )
  WXS_BOOL( wxsToggleButton, IsChecked, _T( "Is checked" ), _T( "checked" ), false )
}
